#! /usr/bin/env python
# -*- coding: utf-8 -*-

import time
from playwright.sync_api import Page
from ui_automation_test.common.base_page import BasePage
from ui_automation_test.locators.dualPrevention.riskGrading.riskUnit.unitShutdown.loc_risk_unit_stop_history import LocStopHistoryUnit
from ui_automation_test.common.logger import logger
from ui_automation_test.common.locate_by import By

class RiskUnitShutdownPage(BasePage):
    def __init__(self, page: Page):
        super().__init__(page)
        self.switch_menu('双重预防机制')
        self.switch_menu('风险分析清单管理')
        self.switch_menu('风险分析单元')
        self.click({'loc_role': By.button, 'loc_name': '单元停工管理'})


    def disable_unit(self, unit_name, reason, start_time=None):
        """
        根据单元名称执行停工停用操作，并填写原因和开始时间
        :param unit_name: 要停用的单元名称
        :param reason: 停用原因
        :param start_time: 停用开始时间（字符串，格式如'2025-07-08 14:59:06'，可选）
        """
        logger.info(f'准备对单元 {unit_name} 执行停工停用')
        # 1. 点击表格行内"停用"按钮
        row = self.page.locator('.el-table__body tr').filter(has_text=unit_name).nth(0)
        row.get_by_text('停用').click()

        # 2. 在弹窗中填写停用原因
        dialog = self.page.get_by_role('dialog', name='单元停工')
        dialog.get_by_role('textbox', name='停用原因:').fill(reason)

        # 3. 填写停用开始时间
        if start_time:
            dialog.get_by_role('textbox', name='停用开始时间:').fill(start_time)

        # 4. 点击"确定"按钮
        dialog.get_by_role('button', name='确定').click()
        logger.info(f"已对单元 {unit_name} 执行停工，原因：{reason}，开始时间：{start_time if start_time else '默认'}")

    def enable_unit_by_name(self, unit_name, end_time=None):
        """
        根据单元名称启用风险分析单元
        """
        logger.info(f'准备启用单元：{unit_name}')
        row = self.page.locator('.el-table__body tr').filter(has_text=unit_name).nth(0)
        row.get_by_text('启用').click()

        # 在弹窗中填写停用原因
        dialog = self.page.get_by_role('dialog', name='单元启用')
        # 3. 填写停用结束时间
        if end_time:
            dialog.get_by_role('textbox', name='停工结束时间:').fill(end_time)
        #弹窗确认
        self.page.get_by_role('button', name='确定').click()
        
        logger.info(f'已点击启用按钮：{unit_name}')

    def view_stop_history_by_name(self, unit_name):
        """
        根据单元名称查看停工历史
        """
        logger.info(f'准备查看停工历史：{unit_name}')
        row = self.page.locator('.el-table__body tr').filter(has_text=unit_name).nth(0)
        row.get_by_text('停工历史').click()
        # 等待弹窗出现
        dialog = self.page.get_by_role('dialog', name='停工历史')
        dialog.wait_for(timeout=5000)
        logger.info(f'已点击停工历史按钮：{unit_name}')
        #点击关闭弹窗按钮
        logger.info('关闭停工历史弹框')
        self.click(LocStopHistoryUnit.loc_close)